package com.ctrip.framework.apollo.openapi.server.service;

import com.ctrip.framework.apollo.common.dto.ClusterDTO;
import com.ctrip.framework.apollo.openapi.api.ClusterOpenApiService;
import com.ctrip.framework.apollo.openapi.dto.OpenClusterDTO;
import com.ctrip.framework.apollo.openapi.util.OpenApiBeanUtils;
import com.ctrip.framework.apollo.portal.environment.Env;
import com.ctrip.framework.apollo.portal.service.ClusterService;
import org.springframework.stereotype.Service;

/**
 * @author wxq
 */
@Service
public class ServerClusterOpenApiService implements ClusterOpenApiService {

    private final ClusterService clusterService;

    public ServerClusterOpenApiService(ClusterService clusterService) {
        this.clusterService = clusterService;
    }

    @Override
    public OpenClusterDTO getCluster(String appId, String env, String clusterName) {
        ClusterDTO clusterDTO = clusterService.loadCluster(appId, Env.valueOf(env), clusterName);
        return clusterDTO == null ? null : OpenApiBeanUtils.transformFromClusterDTO(clusterDTO);
    }

    @Override
    public OpenClusterDTO createCluster(String env, OpenClusterDTO openClusterDTO) {
        ClusterDTO toCreate = OpenApiBeanUtils.transformToClusterDTO(openClusterDTO);
        ClusterDTO createdClusterDTO = clusterService.createCluster(Env.valueOf(env), toCreate);
        return OpenApiBeanUtils.transformFromClusterDTO(createdClusterDTO);
    }
}
